package com.english.controller;

import com.english.entity.AboutUs;
import com.english.service.AboutUsService;
import com.english.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.security.PermitAll;

@RestController
@RequestMapping("/api/aboutUs")
public class AboutUsController {

    @Autowired
    private AboutUsService aboutUsService;

    @GetMapping("/getAboutUs")
    public R<AboutUs> getAboutUs() {
        AboutUs aboutUs = aboutUsService.getAboutUs();
        return R.success(aboutUs);
    }

    @PutMapping("/update")
    public R<String> updateAboutUs(@RequestBody AboutUs aboutUs) {
        boolean success = aboutUsService.updateAboutUs(aboutUs);
        if (success) {
            return R.success("更新成功");
        } else {
            return R.error("更新失败");
        }
    }

    /**
     * 获取客服信息 (从AboutUs表中获取)
     */
    @GetMapping("/customer-service")
    public R<Object> getCustomerService() {
        AboutUs aboutUs = aboutUsService.getAboutUs();
        if (aboutUs != null) {
            // 只返回客服相关信息
            java.util.Map<String, String> customerService = new java.util.HashMap<>();
            customerService.put("phone", aboutUs.getServicePhone());
            customerService.put("wechat", aboutUs.getServiceWeChat());
            customerService.put("qq", aboutUs.getServiceQQ());
            return R.success(customerService);
        } else {
            return R.error("客服信息不存在");
        }
    }

    /**
     * 更新客服信息 (更新AboutUs表中的客服字段)
     */
    @PostMapping("/customer-service/update")
    public R<String> updateCustomerService(@RequestBody java.util.Map<String, String> customerData) {
        try {
            AboutUs aboutUs = aboutUsService.getAboutUs();
            if (aboutUs == null) {
                // 如果记录不存在，创建新记录
                aboutUs = new AboutUs();
                aboutUs.setImageUrl("");
                aboutUs.setInstitutionName("专业辅导班");
                aboutUs.setInstitutionAddress("北京市海淀区");
                aboutUs.setInstitutionPhone("010-12345678");
                aboutUs.setInstitutionEmail("contact@tutor.com");
            }
            
            // 更新客服信息
            aboutUs.setServicePhone(customerData.get("phone"));
            aboutUs.setServiceWeChat(customerData.get("wechat"));
            aboutUs.setServiceQQ(customerData.get("qq"));
            aboutUs.setUpdateTime(new java.util.Date());
            
            boolean success = aboutUsService.updateAboutUs(aboutUs);
            if (success) {
                return R.success("客服信息更新成功");
            } else {
                return R.error("客服信息更新失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("更新失败：" + e.getMessage());
        }
    }

    /**
     * 删除关于我们海报
     */
    @DeleteMapping("/delete")
    public R<String> deleteAboutUsPoster() {
        try {
            AboutUs aboutUs = aboutUsService.getAboutUs();
            if (aboutUs == null) {
                return R.error("海报不存在");
            }
            
            String imageUrl = aboutUs.getImageUrl();
            
            // 更新数据库，清空图片URL
            aboutUs.setImageUrl("");
            aboutUs.setUpdateTime(new java.util.Date());
            
            boolean success = aboutUsService.updateAboutUs(aboutUs);
            if (success) {
                // 如果有图片文件，尝试删除物理文件
                if (imageUrl != null && !imageUrl.isEmpty()) {
                    try {
                        deleteImageFile(imageUrl);
                    } catch (Exception e) {
                        System.out.println("删除图片文件失败，但数据库记录已清除: " + e.getMessage());
                        // 不影响整体删除操作的成功
                    }
                }
                return R.success("海报删除成功");
            } else {
                return R.error("海报删除失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("删除失败：" + e.getMessage());
        }
    }
    
    /**
     * 删除图片文件
     */
    private void deleteImageFile(String imageUrl) {
        try {
            // 从URL中提取文件名
            if (imageUrl.contains("/images/")) {
                String fileName = imageUrl.substring(imageUrl.lastIndexOf("/") + 1);
                String uploadPath = "upload/images"; // 使用配置的上传路径
                java.io.File file = new java.io.File(uploadPath, fileName);
                
                if (file.exists()) {
                    if (file.delete()) {
                        System.out.println("成功删除图片文件: " + file.getAbsolutePath());
                    } else {
                        System.out.println("删除图片文件失败: " + file.getAbsolutePath());
                    }
                } else {
                    System.out.println("图片文件不存在: " + file.getAbsolutePath());
                }
            }
        } catch (Exception e) {
            System.out.println("删除图片文件时发生异常: " + e.getMessage());
            throw e;
        }
    }
}
